home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 8174 / 8174.xpi / chrome / antbar.jar / content / lib / lib.js < prev   
Text File  |  2009-12-30  |  9KB  |  346 lines

  1.  
  2.   /*
  3.    * DO NOT EDIT THIS FILE !
  4.    *
  5.    * IT WAS AUTOMATICALLY COPIED FROM THE /lib/ DIRECTORY
  6.    * TO UPDATE IT YOU NEED TO BUILD THE XPI OF THE CURRENT PROJECT
  7.    *
  8.    */
  9.  
  10. // 
  11. //  lib.js
  12. //  firefox
  13. //  
  14. //  Created by Zak on 2008-06-12.
  15. //  Copyright 2008 Ant.com. All rights reserved.
  16. // 
  17.  
  18. var AntLibVersion = 1;
  19.  
  20. var AntLib = (typeof(AntLib) == 'undefined' || AntLib.version < AntLibVersion) ?
  21. {
  22.     JSON:null,
  23.  
  24.     toLog: function (str)
  25.     {
  26.         var self = AntLib;
  27.         var consoleService = self.CCSV("@mozilla.org/consoleservice;1", "nsIConsoleService");
  28.         consoleService.logStringMessage("AntLog: " + str);
  29.     },
  30.     
  31.     openURL: function (url /* , newtab */)
  32.     {
  33.         if (arguments.length > 1 && arguments[1])
  34.             getBrowser().selectedTab = getBrowser().addTab(url);
  35.         else
  36.         {
  37.             window._content.document.location = url;
  38.             window.content.focus();
  39.         }
  40.     },
  41.     
  42.     uriEncode: function (terms)
  43.     {
  44.         return encodeURI(terms).replace(/\//g, "%2F");
  45.     },
  46.     
  47.     openWindow: function (windowType, url, features, params)
  48.     {
  49.         var self = AntLib;
  50.         var wm = self.CCSV("@mozilla.org/appshell/window-mediator;1", "nsIWindowMediator");
  51.         var win = windowType ? wm.getMostRecentWindow(windowType) : null;
  52.  
  53.         if (win) 
  54.         {
  55.             if ("initWithParams" in win) 
  56.                 win.initWithParams(aParams);
  57.             win.focus();
  58.         }    
  59.         else 
  60.         {
  61.             var winFeatures = "resizable,dialog=no,centerscreen" + (features != "" ? ("," + features) : ""); 
  62.             var parentWindow = (self.instantApply || !window.opener || window.opener.closed) ? window : window.opener;
  63.  
  64.             win = parentWindow.openDialog(url, "_blank", winFeatures, params);
  65.         }    
  66.         
  67.         return win; 
  68.     },
  69.  
  70.     compareFFVersion: function (versionString)
  71.     {
  72.         var self = AntLib;
  73.         var appInfo = self.CCSV("@mozilla.org/xre/app-info;1", "nsIXULAppInfo");
  74.         var versionChecker = self.CCSV("@mozilla.org/xpcom/version-comparator;1", "nsIVersionComparator");
  75.         
  76.         return (versionChecker.compare(appInfo.version, versionString) >= 0);
  77.     },
  78.        
  79.     getSiteName: function (locationObj)
  80.     {
  81.         var self = AntLib;
  82.         var hostname = self.safeGet(locationObj, "hostname");
  83.         var index;
  84.         
  85.         index = hostname.lastIndexOf(".");
  86.         if (index > -1)
  87.             hostname = hostname.substring(0, index);
  88.         index = hostname.lastIndexOf(".");
  89.         if (index > -1)
  90.             hostname = hostname.substring(index + 1);
  91.  
  92.         return hostname;
  93.     },
  94.  
  95.     getDomain: function (strURL)
  96.     {
  97.         var domain;
  98.         var self = AntLib;
  99.         try
  100.         {
  101.             var ios = self.CCSV("@mozilla.org/network/io-service;1", "nsIIOService");
  102.             var uri = ios.newURI(strURL, null, null);
  103.  
  104.             try {
  105.                 // Only available in Firefox 3
  106.                 var eTLDService = self.CCSV("@mozilla.org/network/effective-tld-service;1", "nsIEffectiveTLDService");
  107.                 domain = eTLDService.getBaseDomain(uri);
  108.                 self.toLog('eTLDService domain: ' + domain + ' from uri: ' + uri.spec);
  109.             } catch (e) {
  110.                 self.toLog('eTLDService error: ' + e);
  111.                 var host = uri.host;
  112.                 var TLD = host.substring(host.lastIndexOf('.')+1, host.length);
  113.                 var hostNoTLD = host.substring(0, host.lastIndexOf('.'));
  114.                 var secLevDomain = hostNoTLD.substring(hostNoTLD.lastIndexOf('.')+1, hostNoTLD.length);
  115.                 domain = secLevDomain+'.'+TLD;
  116.             }
  117.         } catch (e) {
  118.             return null;
  119.         }
  120.         return domain;
  121.     },
  122.  
  123.     /**
  124.      * Get main browser window, use in order to bypass security context
  125.      */
  126.     getMainWindow: function ()
  127.     {
  128.         var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
  129.         .getInterface(Components.interfaces.nsIWebNavigation)
  130.         .QueryInterface(Components.interfaces.nsIDocShellTreeItem)
  131.         .rootTreeItem
  132.         .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
  133.         .getInterface(Components.interfaces.nsIDOMWindow);
  134.  
  135.         return mainWindow;
  136.     },
  137.  
  138.     
  139.     /**
  140.      * Returns "WINNT" on Windows Vista, XP, 2000, and NT systems
  141.      * "Linux" on GNU/Linux; and "Darwin" on Mac OS X.
  142.      * @return string The Name of the opertating system
  143.      */
  144.     getOsName: function ()
  145.     {
  146.         var self = AntLib;
  147.         return self.CCSV("@mozilla.org/xre/app-info;1", "nsIXULRuntime").OS;
  148.     },
  149.     
  150.     /**
  151.      * Converts a number of bytes to the appropriate unit that results in a
  152.      * number that needs fewer than 4 digits
  153.      *
  154.      * NB: The commented part is only available on FF3
  155.      *
  156.      * @param aBytes
  157.      *        Number of bytes to convert
  158.      * @return A pair: [new value with 3 sig. figs., its unit]
  159.      */
  160.     convertByteUnits: function (aBytes)
  161.     {
  162.         var unitIndex = 0;
  163.         var units = ["B", "KB", "MB", "GB"];
  164.  
  165.         while ((aBytes >= 999.5) && (unitIndex < units.length - 1))
  166.         {
  167.             aBytes /= 1024;
  168.             unitIndex++;
  169.         }
  170.         aBytes = aBytes.toFixed((aBytes > 0) && (aBytes < 100) ? 1 : 0);
  171.         return [aBytes, units[unitIndex]];
  172.     },
  173.  
  174.     /*
  175.      * Open a file using external protocol service
  176.      */
  177.     openExternal: function (aFile)
  178.     {
  179.         var uri = Cc["@mozilla.org/network/io-service;1"].
  180.         getService(Ci.nsIIOService).newFileURI(aFile);
  181.      
  182.         var protocolSvc = Cc["@mozilla.org/uriloader/external-protocol-service;1"].
  183.         getService(Ci.nsIExternalProtocolService);
  184.         protocolSvc.loadUrl(uri);
  185.     },
  186.  
  187.     /**
  188.      * Trim a string
  189.      */
  190.     trim: function (str)
  191.     {
  192.         var r = str;
  193.       
  194.         if (!r)
  195.             return '';
  196.         r = r.replace(/^\s+/, '');
  197.         r = r.replace(/\s+$/, '');
  198.         r = r.replace(/\s+/g, ' ');
  199.       
  200.         return r;
  201.     },
  202.  
  203.     /**
  204.      * Sanitize a string
  205.      */
  206.     sanitize: function (str)
  207.     {
  208.         var self = AntLib;
  209.         return self.trim(str).replace(/[\\\/\?%\*:\|\"\<\>]/gi, '').replace(/[ _]+/g, '_');
  210.     },
  211.  
  212.     upFirstLetter: function (str)
  213.     {
  214.         return str.substr(0, 1).toUpperCase() + str.substr(1);
  215.     },
  216.  
  217.  
  218.     /**
  219.      * Safely get a property using try/catch block
  220.      * @param obj           The object to get the property from
  221.      * @param prop          The property to get
  222.      * @return property     The value or an empty string
  223.      */
  224.     safeGet: function(obj, prop)
  225.     {
  226.         var property;
  227.  
  228.         try
  229.         {
  230.             property = obj[prop];
  231.         } 
  232.         catch (e)
  233.         {
  234.             property = '';
  235.         }
  236.  
  237.         return property;
  238.     },
  239.  
  240.     /* This function returns the user profile folder */
  241.     getProfileFolder: function()
  242.     {
  243.     var p;
  244.     var NSIFILE = Components.interfaces.nsIFile;
  245.     var dirLocator = Components.classes["@mozilla.org/file/directory_service;1"]
  246.     .getService(Components.interfaces.nsIProperties);
  247.     p = dirLocator.get("ProfD", NSIFILE).path;
  248.     var dirLocal = Components.classes["@mozilla.org/file/local;1"]
  249.     .createInstance(Components.interfaces.nsILocalFile);
  250.     dirLocal.initWithPath(p);
  251.     if (dirLocal.exists() && dirLocal.isDirectory())  {
  252.         return dirLocal;
  253.     }
  254.     return null;
  255.     },
  256.  
  257.  
  258.     _CI: Components.interfaces,
  259.     _CC: Components.classes,
  260.  
  261.     /**
  262.      * Helpers to acces Mozilla Interfaces, Classes and Services
  263.      */
  264.     CC: function(cName)
  265.     {
  266.         var self = AntLib;
  267.         return self._CC[cName];
  268.     },
  269.  
  270.     CI: function(ifaceName)
  271.     {
  272.         var self = AntLib;
  273.         return self._CI[ifaceName];
  274.     },
  275.  
  276.     CCSV: function(cName, ifaceName)
  277.     {
  278.         var self = AntLib;
  279.         return self._CC[cName].getService(self._CI[ifaceName]);    
  280.     },
  281.  
  282.     CCIN: function(cName, ifaceName)
  283.     {
  284.         var self = AntLib;
  285.         return self._CC[cName].createInstance(self._CI[ifaceName]);
  286.     },
  287.  
  288.     QI: function(obj, iface)
  289.     {
  290.         return obj.QueryInterface(iface);
  291.     },
  292.  
  293.     GI: function (obj, iface)
  294.     {
  295.         try { return obj.getInterface(iface); }
  296.         catch (e) { if (e.name == "NS_NOINTERFACE") {} }
  297.         return null;
  298.     },
  299.  
  300.     /**
  301.      * Abstract for the getElementById function
  302.      * @param id            The id to look for
  303.      * @param doc           (Optional) Search in the specified scope instead of document
  304.      */
  305.     ob: function (id, doc)
  306.     {
  307.         var self = AntLib;
  308.         var ret;
  309.         if (doc == undefined)
  310.             ret = document.getElementById(id);
  311.         else
  312.             ret = doc.getElementById(id);
  313.  
  314.         if (ret == null)
  315.             self.toLog("Missing id: " + id + " caller: " + self.ob.caller);
  316.  
  317.         return ret;
  318.  
  319.     }
  320. } : AntLib;
  321.  
  322. AntLib.toLog("JSON initializing for AntLib version " + AntLibVersion);
  323.  
  324. /**
  325.  * Compatibility for the JSON 
  326.  */
  327. if (typeof(JSON) == "undefined") {
  328.  
  329.     try {
  330.         // This eval is for avoiding a Rhino syntax error
  331.         eval('Components.utils.import("resource://gre/modules/JSON.jsm");');
  332.         AntLib.JSON = {
  333.             parse: JSON.fromString,
  334.             stringify: JSON.toString
  335.         };
  336.     }
  337.     catch (e) {
  338.         AntLib.JSON = {};
  339.         AntLib.toLog("JSON init error: " + e);
  340.     }
  341.  
  342. }
  343. else {
  344.     AntLib.JSON = JSON;
  345. }
  346.